/**
 * @file
 * @author  Tsin Smith <tsin.creator@gmail.com>
 *
 * @section DESCRIPTION
 *
 */

#ifndef __TSIN_LIBRARY_TOUHOUSPELLBASIC_HPP__
#define __TSIN_LIBRARY_TOUHOUSPELLBASIC_HPP__

#include <tsin/library/common.hpp>
#include <tsin/library/Spell.hpp>
#include <tsin/library/GameViewport.hpp>
#include <tsin/library/TouhouSoloFront.hpp>

namespace tsin {

        /**
         * @class TouhouSpellBasic
         * @brief A common realization of touhou-like spells.
         */
        class LIBRARY_DLLEXPORT TouhouSpellBasic : public Spell
        {
        public:
                TouhouSpellBasic();

                virtual const char *getName();

                virtual const StandardResolution getResolution();

                virtual int getNrViewport();
                virtual GameViewport *getViewport(int idx);

                virtual const char *getFrontImagePath();
                virtual Front *getFront();

                virtual int getEvents(GameEvent **events) = 0;

        protected:
                const char *name;
                GameViewport *viewport;

                TouhouSoloFront front;
                const char *frontImagePath;
        };

}

#endif /* __TSIN_LIBRARY_TOUHOUSPELLBASIC_HPP__ */
